// 全局消息状态管理 + 事件总线
export default {
  // 全局共享的状态
  state: {
    unreadCount: 0,
    lastUnreadCount: 0,
    notificationList: [],
    timer: null,
    isTimerRunning: false
  },

  // 事件总线（存储所有组件的更新回调）
  listeners: [],

  // 注册事件监听（组件挂载时调用）
  onUpdate(callback) {
    // 避免重复注册同一个回调
    if (!this.listeners.includes(callback)) {
      this.listeners.push(callback);
    }
  },

  // 移除事件监听（组件卸载时调用）
  offUpdate(callback) {
    this.listeners = this.listeners.filter(listener => listener !== callback);
  },

  // 触发所有组件更新
  triggerUpdate() {
    this.listeners.forEach(callback => {
      try {
        callback({ ...this.state }); // 传递状态副本，避免直接修改
      } catch (error) {
        console.error('通知组件更新失败:', error);
      }
    });
  },

  // 更新未读数量并通知所有组件
  setUnreadCount(count) {
    this.state.lastUnreadCount = this.state.unreadCount;
    this.state.unreadCount = count;
    this.triggerUpdate(); // 通知所有组件
  },

  // 更新消息列表并通知所有组件
  setNotificationList(list) {
    this.state.notificationList = [...list]; // 创建新数组触发更新
    this.triggerUpdate(); // 通知所有组件
  },

  // 全局定时器控制
  startTimer(refreshFn, interval = 30000) {
    if (this.state.isTimerRunning) return;
    
    this.state.timer = setInterval(() => {
      try {
        refreshFn();
      } catch (error) {
        console.error('定时刷新失败:', error);
      }
    }, interval);
    
    this.state.isTimerRunning = true;
  },

  // 清除全局定时器
  clearTimer() {
    if (this.state.timer) {
      clearInterval(this.state.timer);
      this.state.timer = null;
      this.state.isTimerRunning = false;
    }
  }
};
